Written by Aunoy Poddar May 23rd, 2022

Process the puncta quantified raw data

current_file <- rstudioapi::getActiveDocumentContext()$path
output_file <- stringr::str_replace(current_file, '.Rmd', '.R')
knitr::purl(current_file, output = output_file)
file.edit(output_file)

Import packages and functions

library(Seurat)
library(tictoc)
library(ggplot2)
library(patchwork)
library(pheatmap)
library(RColorBrewer)
library(tidyverse)
library(gridExtra)

Load the data

data_dir = '/home/aunoy/st/arc_profiling/st_analysis/hand_annotated_data/rethresholded'
output_dir_plot = '/home/aunoy/st/arc_profiling/st_analysis/results/plots'
output_dir_tbls = '/home/aunoy/st/arc_profiling/st_analysis/results/tables'

Merge both datasets and generate a metadata column that corresponds

to the cell

df = data.frame()
for (file_name in list.files(data_dir)){
  print(file_name)
  #if(grepl('408_TC', file_name) | grepl('408_vMS', file_name)){
  #  next
  #}
  df_to_append <- read.table(file.path(data_dir, file_name), sep = ',', header = TRUE)
  while(length(ind <- which(df_to_append$Image.Name == "")) > 0){
    df_to_append$Image.Name[ind] <- df_to_append$Image.Name[ind -1]
  }
  #df_to_append <- df_to_append %>%
  #  dplyr::select(-1)
  if(grepl('164', file_name)){
    df_to_append <- df_to_append %>%
      dplyr::select(-X)
  }
  colnames(df_to_append) <- toupper(colnames(df_to_append))
  df_to_append <- df_to_append %>%
    mutate(area = strsplit(file_name, '.csv')[[1]])
  if(!is_empty(df)){
    df_to_append <- df_to_append %>%
          dplyr::select(colnames(df))
  }
  df <- rbind(df, df_to_append)
}
[1] "164_CC.csv"
[1] "164_MS_CC.csv"
[1] "164_MS_TC.csv"
[1] "164_TC.csv"
[1] "408_CC.csv"
[1] "408_dMS_TC.csv"
[1] "408_MS_CC.csv"
[1] "408_TC.csv"
[1] "408_vMS_TC.csv"
### right now i want experiment # for the day and overwrite to be false
# 
# ## Write to file
# date <- gsub('-', '', Sys.Date())
# exp_num <- '1'
# folder <- paste0(date, '_', exp_num)
# 
# ## check if folder exists, if not, then proceed
# expltdir <- file.path(output_dir_plot, folder)
# extbldir <- file.path(output_dir_plot, folder)
# 
# 
# if(dir.exists(expltdir) || dir.exists(extbldir)){
#   quit('Folder exists. Set --overwrite to TRUE to replace folder')
# }
# 
# ## Create the directories
# dir.create(expltdir)
# dir.create(extbldir)

Add the cellnames as rownames

rownames(df) <- c(outer(c('C'), 1:dim(df)[1], FUN=paste0))

Define the different gene sets based on conversation with JY

migra = toupper(c('Dcx', 'Lrp8', 'Reln', 'Dcdc2', 'Ncam1', 'Kia0319', 'Vldlr'))
#CGE = toupper(c('Egfr', 'Vip', 'Prox1'))
#LGE = toupper(c('Tshz1', 'Gsx2', 'Emx1'))
#MGE = toupper(c('Lhx6', 'Maf1', 'Sst'))
CGE = toupper(c('Egfr', 'Prox1'))
LGE = toupper(c('Tshz1', 'Gsx2', 'Emx1'))
MGE = toupper(c('Lhx6', 'Maf1', 'Nkx2.1'))
CGE_LGE = toupper(c('Scgn', 'Couptf2', 'Sp8', 'Calb2', 'Pax6'))
GABA = toupper(c('Dlx2', 'Gad1'))
mature_IN = toupper(c('Gad1', 'Vip', 'Sst'))
progen_IN = toupper(c('Dlx2'))
Excit = toupper(c('Eomes', 'Tbr1', 'Satb2'))
ligand = toupper(c('Reln', 'Cxcl12', 'Cxcl14'))
recept = toupper(c('Lrp8', 'Cxcr7', 'Cxcr4', 'Vldlr'))

Heatmaps

Rearrange the data to wide for heatmap

df_longer <- df %>%
  rownames_to_column('Cell') %>%
  dplyr::select(-c(area, IMAGE.NAME)) %>%
  pivot_longer(!Cell, names_to = 'Gene', values_to = "Puncta2Nuc_IR")

df_wide <- df %>%
  rownames_to_column('Cell')%>%
  dplyr::select(-c(area, IMAGE.NAME)) %>%
  pivot_longer(!Cell, names_to = 'Gene', values_to = "Puncta2Nuc_IR") %>%
  pivot_wider(names_from = Gene, values_from = Puncta2Nuc_IR)

some quick heatmap business

By area, not dendogram

dist_mat <- as.dist(1-cor(scaled_mat, method="spearman"))
dist_mat %>%
pheatmap(annotation_col = annotation,
         color = colorRampPalette(rev(brewer.pal(n = 7, name = "RdYlBu")))(100),
        cluster_rows = TRUE, cluster_cols = TRUE,
fontsize_row = 8, fontsize_col = 4, show_colnames = FALSE,
         show_rownames = FALSE, cell_width = 0.1, cellheight = 0.3)#,

    #filename = file.path(output_dir, 'spearmann_log.png'))
df_longer %>%
  filter(Gene == 'Gsx2') %>%
  ggplot(aes(x=Puncta2Nuc_IR)) + 
  geom_histogram(color="black", fill="white")

plots = list()
save = FALSE
all_genes <- df %>% 
  dplyr::select(-area) %>%
  colnames()

for (i in 1:length(all_genes)){
  plots[[i]] <- df_longer %>%
  filter(Gene == all_genes[i]) %>%
  mutate(log_norm = log1_and_mult(Puncta2Nuc_IR)) %>%
  ggplot(aes(x=log_norm, label = Gene)) + 
  geom_histogram(color="black", fill="white") + 
  labs(title=all_genes[i])+
  theme_classic()
}

#gridExtra::grid.arrange(grobs = plots, ncol = 4, nrow = 8, lengths=2:6)
if (save){
  ml <- marrangeGrob(plots, nrow=2, ncol=2)
  ggsave("/home/aunoy/raw_histograms.pdf", ml)
} else{
  marrangeGrob(plots, nrow=2, ncol=2)
}
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

process data in Seurat object

jyobj <- df[good_cells, ] %>%
  dplyr::select(-c(area, IMAGE.NAME)) %>%
  t() %>%
  CreateSeuratObject()
jyobj <- NormalizeData(jyobj, scale.factor = 1e5) ###
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
sum(jyobj@assays$RNA[,] < 1)
[1] 14325

plot highly variable genes

jyobj <- FindVariableFeatures(jyobj, selection.method = "vst")
Calculating gene variances
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating feature variances of standardized and clipped values
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
# Identify the 10 most highly variable genes
top10 <- head(VariableFeatures(jyobj), 10)

# plot variable features with and without labels
plot1 <- VariableFeaturePlot(jyobj) + theme(axis.title.x = element_text(size = 10), axis.text.x = element_text(size = 6))
plot2 <- LabelPoints(plot = plot1, points = top10, repel = TRUE) + theme(axis.title.x = element_text(size = 10), axis.text.x = element_text(size = 6))
When using repel, set xnudge and ynudge to 0 for optimal results
plot1 + plot2 + theme(axis.title.y = element_text(size = 10))

#ggsave(file.path(output_dir, 'vst_plot.png'))
all.genes <- rownames(jyobj)
jyobj <- ScaleData(jyobj, features = all.genes)
Centering and scaling data matrix

  |                                                                                                 
  |                                                                                           |   0%
  |                                                                                                 
  |===========================================================================================| 100%
jyobj <- RunPCA(jyobj, features = VariableFeatures(object = jyobj), approx = FALSE)
Warning: Requested number is larger than the number of available items (32). Setting to 32.
Warning: Requested number is larger than the number of available items (32). Setting to 32.
Warning: Requested number is larger than the number of available items (32). Setting to 32.
Warning: Requested number is larger than the number of available items (32). Setting to 32.
Warning: Requested number is larger than the number of available items (32). Setting to 32.
PC_ 1 
Positive:  KIA0319, SATB2, DCDC2, EOMES, CALB2, TBR1, CXCL12, ASCL1, PAX6, RELN 
       LRP8, EGFR, EMX1, COUPTF2, NCAM1, CXCR4 
Negative:  GAD1, NKX2.1, MAF1, GSX2, TSHZ1, PROX1, SCGN, VIP, SST, DLX2 
       DCX, SP8, LHX6, CXCL14, CXCR7, VLDLR 
PC_ 2 
Positive:  DCX, TBR1, SCGN, LRP8, EGFR, EOMES, DCDC2, COUPTF2, CALB2, NCAM1 
       GSX2, CXCR7, TSHZ1, KIA0319, SATB2, CXCL14 
Negative:  VIP, CXCR4, MAF1, GAD1, DLX2, ASCL1, RELN, SST, LHX6, PAX6 
       EMX1, PROX1, VLDLR, NKX2.1, CXCL12, SP8 
PC_ 3 
Positive:  SP8, COUPTF2, NKX2.1, SCGN, PROX1, LHX6, DLX2, EMX1, TSHZ1, EOMES 
       TBR1, GSX2, LRP8, MAF1, CXCR4, CXCR7 
Negative:  NCAM1, GAD1, RELN, EGFR, SST, ASCL1, KIA0319, CXCL14, VIP, DCDC2 
       CALB2, CXCL12, DCX, PAX6, SATB2, VLDLR 
PC_ 4 
Positive:  SST, LHX6, LRP8, DLX2, TBR1, PAX6, COUPTF2, EOMES, RELN, CALB2 
       SATB2, CXCL12, GAD1, SP8, EMX1, CXCR4 
Negative:  TSHZ1, NCAM1, PROX1, CXCR7, CXCL14, EGFR, VLDLR, SCGN, NKX2.1, GSX2 
       VIP, MAF1, DCDC2, ASCL1, DCX, KIA0319 
PC_ 5 
Positive:  RELN, SCGN, PAX6, ASCL1, SATB2, SST, SP8, EMX1, GSX2, MAF1 
       CXCR7, NCAM1, VLDLR, DCX, EGFR, KIA0319 
Negative:  CXCR4, GAD1, LRP8, EOMES, CXCL14, LHX6, VIP, DCDC2, CXCL12, PROX1 
       CALB2, NKX2.1, COUPTF2, DLX2, TBR1, TSHZ1 
print(jyobj[["pca"]], dims = 1:5, nfeatures = 5)
PC_ 1 
Positive:  KIA0319, SATB2, DCDC2, EOMES, CALB2 
Negative:  GAD1, NKX2.1, MAF1, GSX2, TSHZ1 
PC_ 2 
Positive:  DCX, TBR1, SCGN, LRP8, EGFR 
Negative:  VIP, CXCR4, MAF1, GAD1, DLX2 
PC_ 3 
Positive:  SP8, COUPTF2, NKX2.1, SCGN, PROX1 
Negative:  NCAM1, GAD1, RELN, EGFR, SST 
PC_ 4 
Positive:  SST, LHX6, LRP8, DLX2, TBR1 
Negative:  TSHZ1, NCAM1, PROX1, CXCR7, CXCL14 
PC_ 5 
Positive:  RELN, SCGN, PAX6, ASCL1, SATB2 
Negative:  CXCR4, GAD1, LRP8, EOMES, CXCL14 
VizDimLoadings(jyobj, dims = 1:2, reduction = "pca")

jyobj$area <- df[good_cells,]$area
DimPlot(jyobj, reduction = "pca", group.by = 'area')

ElbowPlot(jyobj)

PC30,resolution 0.8

jyobj <- FindNeighbors(jyobj, dims = 1:30)
Computing nearest neighbor graph
Computing SNN
jyobj <- FindClusters(jyobj, resolution = 1.4)
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.5912
Number of communities: 10
Elapsed time: 0 seconds
jyobj <- RunUMAP(jyobj, dims = 1:30)
17:39:53 UMAP embedding parameters a = 0.9922 b = 1.112
17:39:53 Read 1285 rows and found 30 numeric columns
17:39:53 Using Annoy for neighbor search, n_neighbors = 30
17:39:53 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:39:53 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443eeff1361
17:39:53 Searching Annoy index using 1 thread, search_k = 3000
17:39:54 Annoy recall = 100%
17:39:54 Commencing smooth kNN distance calibration using 1 thread
17:39:55 Initializing from normalized Laplacian + noise
17:39:55 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:39:57 Optimization finished
DimPlot(jyobj, reduction = "umap", group.by = 'seurat_clusters')

Compute scores for groups of genes

jyobj.markers <- FindAllMarkers(jyobj, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25)
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |++++++                                            | 11% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |++++                                              | 7 % ~00s          
  |++++++++                                          | 14% ~00s          
  |+++++++++++                                       | 21% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |++++++++++++++++++                                | 36% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |++++++                                            | 11% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |++++                                              | 7 % ~00s          
  |++++++++                                          | 14% ~00s          
  |+++++++++++                                       | 21% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |++++++++++++++++++                                | 36% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 7

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 8

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 9

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
jyobj.markers %>%
   group_by(cluster) %>%
   slice_max(n = 32, order_by = avg_log2FC)
VlnPlot(jyobj,c("SATB2","GAD1"))

DCX GAD1 COUPTF2 SP8 TSHZ1 NKX2.1

# DCX
# GAD1
breakpoints = c(0.2, 0.25, 0.45, 0.5, 0.55, 0.6, 0.65,
                0.7, 0.75, 0.8, 0.9, 0.95, 1, 1.05, 1.4, 1.45, 1.6, 1.65, 1.85, 1.9)

plots = list()
jyobj <- FindNeighbors(jyobj, dims = 1:30)
Computing nearest neighbor graph
Computing SNN
i = 1
for (breakpoint in breakpoints){
  jyobj <- FindClusters(jyobj, resolution = breakpoint)
  jyobj <- RunUMAP(jyobj, dims = 1:30)
  jyobj.markers <- FindAllMarkers(jyobj, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25)
  labels = jyobj.markers %>%
   group_by(cluster) %>%
   slice_max(n = 1, order_by = avg_log2FC)
  new.cluster.ids <- labels$gene
  names(new.cluster.ids) <- levels(jyobj)
  jyobj <- RenameIdents(jyobj, new.cluster.ids)
  plots[[i]] = DimPlot(jyobj, reduction = "umap", pt.size = 1, label = TRUE) + NoAxes() + NoLegend()
  i = i + 1
}
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8236
Number of communities: 2
Elapsed time: 0 seconds
17:41:18 UMAP embedding parameters a = 0.9922 b = 1.112
17:41:18 Read 1285 rows and found 30 numeric columns
17:41:18 Using Annoy for neighbor search, n_neighbors = 30
17:41:18 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:41:18 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443e2824dc0a
17:41:18 Searching Annoy index using 1 thread, search_k = 3000
17:41:18 Annoy recall = 100%
17:41:19 Commencing smooth kNN distance calibration using 1 thread
17:41:19 Initializing from normalized Laplacian + noise
17:41:19 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:41:21 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |+++                                               | 5 % ~00s          
  |+++++                                             | 10% ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++                                | 35% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8044
Number of communities: 3
Elapsed time: 0 seconds
17:41:22 UMAP embedding parameters a = 0.9922 b = 1.112
17:41:22 Read 1285 rows and found 30 numeric columns
17:41:22 Using Annoy for neighbor search, n_neighbors = 30
17:41:22 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:41:22 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443e78b46f58
17:41:22 Searching Annoy index using 1 thread, search_k = 3000
17:41:22 Annoy recall = 100%
17:41:23 Commencing smooth kNN distance calibration using 1 thread
17:41:24 Initializing from normalized Laplacian + noise
17:41:24 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:41:25 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |+++                                               | 6 % ~00s          
  |++++++                                            | 12% ~00s          
  |+++++++++                                         | 18% ~00s          
  |++++++++++++                                      | 24% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |++++++++++++++++++                                | 35% ~00s          
  |+++++++++++++++++++++                             | 41% ~00s          
  |++++++++++++++++++++++++                          | 47% ~00s          
  |+++++++++++++++++++++++++++                       | 53% ~00s          
  |++++++++++++++++++++++++++++++                    | 59% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 65% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 76% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 82% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |++++++                                            | 11% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.7458
Number of communities: 4
Elapsed time: 0 seconds
17:41:26 UMAP embedding parameters a = 0.9922 b = 1.112
17:41:26 Read 1285 rows and found 30 numeric columns
17:41:26 Using Annoy for neighbor search, n_neighbors = 30
17:41:26 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:41:26 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443e796f41c4
17:41:26 Searching Annoy index using 1 thread, search_k = 3000
17:41:27 Annoy recall = 100%
17:41:27 Commencing smooth kNN distance calibration using 1 thread
17:41:28 Initializing from normalized Laplacian + noise
17:41:28 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:41:30 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |++++                                              | 6 % ~00s          
  |+++++++                                           | 12% ~00s          
  |++++++++++                                        | 19% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |++++++++++++++++++++++                            | 44% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |+++++++++++++++++++++++++++++                     | 56% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |++++++                                            | 11% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.7332
Number of communities: 6
Elapsed time: 0 seconds
17:41:30 UMAP embedding parameters a = 0.9922 b = 1.112
17:41:30 Read 1285 rows and found 30 numeric columns
17:41:30 Using Annoy for neighbor search, n_neighbors = 30
17:41:30 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:41:30 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443e4a8793d3
17:41:30 Searching Annoy index using 1 thread, search_k = 3000
17:41:31 Annoy recall = 100%
17:41:31 Commencing smooth kNN distance calibration using 1 thread
17:41:32 Initializing from normalized Laplacian + noise
17:41:32 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:41:34 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |++++                                              | 7 % ~00s          
  |++++++++                                          | 14% ~00s          
  |+++++++++++                                       | 21% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |++++++++++++++++++                                | 36% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.7221
Number of communities: 7
Elapsed time: 0 seconds
17:41:35 UMAP embedding parameters a = 0.9922 b = 1.112
17:41:35 Read 1285 rows and found 30 numeric columns
17:41:35 Using Annoy for neighbor search, n_neighbors = 30
17:41:35 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:41:35 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443e173728a8
17:41:35 Searching Annoy index using 1 thread, search_k = 3000
17:41:35 Annoy recall = 100%
17:41:36 Commencing smooth kNN distance calibration using 1 thread
17:41:36 Initializing from normalized Laplacian + noise
17:41:36 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:41:38 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.7115
Number of communities: 7
Elapsed time: 0 seconds
17:41:39 UMAP embedding parameters a = 0.9922 b = 1.112
17:41:39 Read 1285 rows and found 30 numeric columns
17:41:39 Using Annoy for neighbor search, n_neighbors = 30
17:41:39 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:41:39 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443e5288b983
17:41:39 Searching Annoy index using 1 thread, search_k = 3000
17:41:40 Annoy recall = 100%
17:41:40 Commencing smooth kNN distance calibration using 1 thread
17:41:41 Initializing from normalized Laplacian + noise
17:41:41 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:41:42 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.7007
Number of communities: 7
Elapsed time: 0 seconds
17:41:43 UMAP embedding parameters a = 0.9922 b = 1.112
17:41:43 Read 1285 rows and found 30 numeric columns
17:41:43 Using Annoy for neighbor search, n_neighbors = 30
17:41:43 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:41:44 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443e5d6af73e
17:41:44 Searching Annoy index using 1 thread, search_k = 3000
17:41:44 Annoy recall = 100%
17:41:44 Commencing smooth kNN distance calibration using 1 thread
17:41:45 Initializing from normalized Laplacian + noise
17:41:45 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:41:47 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |++++                                              | 7 % ~00s          
  |++++++++                                          | 14% ~00s          
  |+++++++++++                                       | 21% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |++++++++++++++++++                                | 36% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.6898
Number of communities: 7
Elapsed time: 0 seconds
17:41:48 UMAP embedding parameters a = 0.9922 b = 1.112
17:41:48 Read 1285 rows and found 30 numeric columns
17:41:48 Using Annoy for neighbor search, n_neighbors = 30
17:41:48 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:41:48 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443ec8c941a
17:41:48 Searching Annoy index using 1 thread, search_k = 3000
17:41:48 Annoy recall = 100%
17:41:49 Commencing smooth kNN distance calibration using 1 thread
17:41:49 Initializing from normalized Laplacian + noise
17:41:49 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:41:51 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.6805
Number of communities: 7
Elapsed time: 0 seconds
17:41:52 UMAP embedding parameters a = 0.9922 b = 1.112
17:41:52 Read 1285 rows and found 30 numeric columns
17:41:52 Using Annoy for neighbor search, n_neighbors = 30
17:41:52 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:41:52 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443e1c2bc809
17:41:52 Searching Annoy index using 1 thread, search_k = 3000
17:41:53 Annoy recall = 100%
17:41:53 Commencing smooth kNN distance calibration using 1 thread
17:41:54 Initializing from normalized Laplacian + noise
17:41:54 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:41:56 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.6717
Number of communities: 7
Elapsed time: 0 seconds
17:41:57 UMAP embedding parameters a = 0.9922 b = 1.112
17:41:57 Read 1285 rows and found 30 numeric columns
17:41:57 Using Annoy for neighbor search, n_neighbors = 30
17:41:57 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:41:57 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443e6b3149f5
17:41:57 Searching Annoy index using 1 thread, search_k = 3000
17:41:57 Annoy recall = 100%
17:41:58 Commencing smooth kNN distance calibration using 1 thread
17:41:59 Initializing from normalized Laplacian + noise
17:41:59 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:01 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.6549
Number of communities: 8
Elapsed time: 0 seconds
17:42:01 UMAP embedding parameters a = 0.9922 b = 1.112
17:42:01 Read 1285 rows and found 30 numeric columns
17:42:01 Using Annoy for neighbor search, n_neighbors = 30
17:42:01 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:01 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443e7e2a028
17:42:01 Searching Annoy index using 1 thread, search_k = 3000
17:42:02 Annoy recall = 100%
17:42:02 Commencing smooth kNN distance calibration using 1 thread
17:42:03 Initializing from normalized Laplacian + noise
17:42:03 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:05 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |+++++                                             | 8 % ~00s          
  |+++++++++                                         | 17% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++                             | 42% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 58% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |++++++                                            | 11% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 7

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.6474
Number of communities: 9
Elapsed time: 0 seconds
17:42:06 UMAP embedding parameters a = 0.9922 b = 1.112
17:42:06 Read 1285 rows and found 30 numeric columns
17:42:06 Using Annoy for neighbor search, n_neighbors = 30
17:42:06 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:06 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443e155af36a
17:42:06 Searching Annoy index using 1 thread, search_k = 3000
17:42:06 Annoy recall = 100%
17:42:06 Commencing smooth kNN distance calibration using 1 thread
17:42:07 Initializing from normalized Laplacian + noise
17:42:07 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:09 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |++++                                              | 7 % ~00s          
  |++++++++                                          | 14% ~00s          
  |+++++++++++                                       | 21% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |++++++++++++++++++                                | 36% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |++++++                                            | 11% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |++++++                                            | 11% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+++++                                             | 8 % ~00s          
  |+++++++++                                         | 17% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++                             | 42% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 58% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 7

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 8

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.6407
Number of communities: 9
Elapsed time: 0 seconds
17:42:10 UMAP embedding parameters a = 0.9922 b = 1.112
17:42:10 Read 1285 rows and found 30 numeric columns
17:42:10 Using Annoy for neighbor search, n_neighbors = 30
17:42:10 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:10 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443e324ffeb8
17:42:10 Searching Annoy index using 1 thread, search_k = 3000
17:42:11 Annoy recall = 100%
17:42:11 Commencing smooth kNN distance calibration using 1 thread
17:42:12 Initializing from normalized Laplacian + noise
17:42:12 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:14 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |++++++                                            | 11% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |++++++                                            | 11% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 7

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 8

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.6328
Number of communities: 9
Elapsed time: 0 seconds
17:42:15 UMAP embedding parameters a = 0.9922 b = 1.112
17:42:15 Read 1285 rows and found 30 numeric columns
17:42:15 Using Annoy for neighbor search, n_neighbors = 30
17:42:15 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:15 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443e345cb3b8
17:42:15 Searching Annoy index using 1 thread, search_k = 3000
17:42:15 Annoy recall = 100%
17:42:16 Commencing smooth kNN distance calibration using 1 thread
17:42:16 Initializing from normalized Laplacian + noise
17:42:16 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:19 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |++++++                                            | 11% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |++++++                                            | 11% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 7

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 8

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.5912
Number of communities: 10
Elapsed time: 0 seconds
17:42:20 UMAP embedding parameters a = 0.9922 b = 1.112
17:42:20 Read 1285 rows and found 30 numeric columns
17:42:20 Using Annoy for neighbor search, n_neighbors = 30
17:42:20 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:20 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443e9b008a7
17:42:20 Searching Annoy index using 1 thread, search_k = 3000
17:42:20 Annoy recall = 100%
17:42:20 Commencing smooth kNN distance calibration using 1 thread
17:42:21 Initializing from normalized Laplacian + noise
17:42:21 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:23 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |++++++                                            | 11% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |++++                                              | 7 % ~00s          
  |++++++++                                          | 14% ~00s          
  |+++++++++++                                       | 21% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |++++++++++++++++++                                | 36% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |++++++                                            | 11% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |++++                                              | 7 % ~00s          
  |++++++++                                          | 14% ~00s          
  |+++++++++++                                       | 21% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |++++++++++++++++++                                | 36% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 7

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 8

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 9

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.5861
Number of communities: 12
Elapsed time: 0 seconds
17:42:24 UMAP embedding parameters a = 0.9922 b = 1.112
17:42:24 Read 1285 rows and found 30 numeric columns
17:42:24 Using Annoy for neighbor search, n_neighbors = 30
17:42:24 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:24 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443e26b12448
17:42:24 Searching Annoy index using 1 thread, search_k = 3000
17:42:25 Annoy recall = 100%
17:42:25 Commencing smooth kNN distance calibration using 1 thread
17:42:26 Initializing from normalized Laplacian + noise
17:42:26 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:28 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |++++++                                            | 11% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |++++++                                            | 11% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |++++++++                                          | 14% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 7

  |                                                  | 0 % ~calculating  
  |+++++                                             | 8 % ~00s          
  |+++++++++                                         | 17% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++                             | 42% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 58% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 8

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 9

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 10

  |                                                  | 0 % ~calculating  
  |++++                                              | 8 % ~00s          
  |++++++++                                          | 15% ~00s          
  |++++++++++++                                      | 23% ~00s          
  |++++++++++++++++                                  | 31% ~00s          
  |++++++++++++++++++++                              | 38% ~00s          
  |++++++++++++++++++++++++                          | 46% ~00s          
  |+++++++++++++++++++++++++++                       | 54% ~00s          
  |+++++++++++++++++++++++++++++++                   | 62% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 11

  |                                                  | 0 % ~calculating  
  |++++                                              | 7 % ~00s          
  |++++++++                                          | 14% ~00s          
  |+++++++++++                                       | 21% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |++++++++++++++++++                                | 36% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.5719
Number of communities: 13
Elapsed time: 0 seconds
17:42:29 UMAP embedding parameters a = 0.9922 b = 1.112
17:42:29 Read 1285 rows and found 30 numeric columns
17:42:29 Using Annoy for neighbor search, n_neighbors = 30
17:42:29 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:29 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443e505fa38c
17:42:29 Searching Annoy index using 1 thread, search_k = 3000
17:42:29 Annoy recall = 100%
17:42:30 Commencing smooth kNN distance calibration using 1 thread
17:42:31 Initializing from normalized Laplacian + noise
17:42:31 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:33 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 7

  |                                                  | 0 % ~calculating  
  |+++++                                             | 8 % ~00s          
  |+++++++++                                         | 17% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++                             | 42% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 58% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 8

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 9

  |                                                  | 0 % ~calculating  
  |++++++                                            | 11% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 10

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 11

  |                                                  | 0 % ~calculating  
  |++++                                              | 7 % ~00s          
  |+++++++                                           | 13% ~00s          
  |++++++++++                                        | 20% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |++++++++++++++++++++++++                          | 47% ~00s          
  |+++++++++++++++++++++++++++                       | 53% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 12

  |                                                  | 0 % ~calculating  
  |++++                                              | 7 % ~00s          
  |++++++++                                          | 14% ~00s          
  |+++++++++++                                       | 21% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |++++++++++++++++++                                | 36% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.5675
Number of communities: 13
Elapsed time: 0 seconds
17:42:34 UMAP embedding parameters a = 0.9922 b = 1.112
17:42:34 Read 1285 rows and found 30 numeric columns
17:42:34 Using Annoy for neighbor search, n_neighbors = 30
17:42:34 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:34 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443e3dd7e4a7
17:42:34 Searching Annoy index using 1 thread, search_k = 3000
17:42:34 Annoy recall = 100%
17:42:35 Commencing smooth kNN distance calibration using 1 thread
17:42:35 Initializing from normalized Laplacian + noise
17:42:36 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:38 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |++++++                                            | 11% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |++++++++                                          | 14% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |+++++                                             | 8 % ~00s          
  |+++++++++                                         | 17% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++                             | 42% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 58% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 7

  |                                                  | 0 % ~calculating  
  |+++++                                             | 8 % ~00s          
  |+++++++++                                         | 17% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++                             | 42% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 58% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 8

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 9

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 10

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 11

  |                                                  | 0 % ~calculating  
  |++++                                              | 7 % ~00s          
  |+++++++                                           | 13% ~00s          
  |++++++++++                                        | 20% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |++++++++++++++++++++++++                          | 47% ~00s          
  |+++++++++++++++++++++++++++                       | 53% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 12

  |                                                  | 0 % ~calculating  
  |++++                                              | 7 % ~00s          
  |++++++++                                          | 14% ~00s          
  |+++++++++++                                       | 21% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |++++++++++++++++++                                | 36% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.5503
Number of communities: 13
Elapsed time: 0 seconds
17:42:39 UMAP embedding parameters a = 0.9922 b = 1.112
17:42:39 Read 1285 rows and found 30 numeric columns
17:42:39 Using Annoy for neighbor search, n_neighbors = 30
17:42:39 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:39 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443e1a6cf1c2
17:42:39 Searching Annoy index using 1 thread, search_k = 3000
17:42:39 Annoy recall = 100%
17:42:40 Commencing smooth kNN distance calibration using 1 thread
17:42:40 Initializing from normalized Laplacian + noise
17:42:40 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:42 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |++++++++                                          | 14% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |+++++                                             | 8 % ~00s          
  |+++++++++                                         | 17% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++                             | 42% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 58% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 7

  |                                                  | 0 % ~calculating  
  |+++++                                             | 8 % ~00s          
  |+++++++++                                         | 17% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++                             | 42% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 58% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 8

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 9

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 10

  |                                                  | 0 % ~calculating  
  |++++++                                            | 11% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 11

  |                                                  | 0 % ~calculating  
  |++++                                              | 7 % ~00s          
  |+++++++                                           | 13% ~00s          
  |++++++++++                                        | 20% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |++++++++++++++++++++++++                          | 47% ~00s          
  |+++++++++++++++++++++++++++                       | 53% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 12

  |                                                  | 0 % ~calculating  
  |++++                                              | 7 % ~00s          
  |++++++++                                          | 14% ~00s          
  |+++++++++++                                       | 21% ~00s          
  |+++++++++++++++                                   | 29% ~00s          
  |++++++++++++++++++                                | 36% ~00s          
  |++++++++++++++++++++++                            | 43% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |+++++++++++++++++++++++++++++                     | 57% ~00s          
  |+++++++++++++++++++++++++++++++++                 | 64% ~00s          
  |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 1285
Number of edges: 45891

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.5457
Number of communities: 14
Elapsed time: 0 seconds
17:42:43 UMAP embedding parameters a = 0.9922 b = 1.112
17:42:43 Read 1285 rows and found 30 numeric columns
17:42:43 Using Annoy for neighbor search, n_neighbors = 30
17:42:43 Building Annoy index with metric = cosine, n_trees = 50
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:44 Writing NN index file to temp file /tmp/RtmpjFYfNO/file18443e6b9375c8
17:42:44 Searching Annoy index using 1 thread, search_k = 3000
17:42:44 Annoy recall = 100%
17:42:44 Commencing smooth kNN distance calibration using 1 thread
17:42:45 Initializing from normalized Laplacian + noise
17:42:45 Commencing optimization for 500 epochs, with 48744 positive edges
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
17:42:47 Optimization finished
Calculating cluster 0

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 1

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 2

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 3

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 4

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 5

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 6

  |                                                  | 0 % ~calculating  
  |+++++                                             | 8 % ~00s          
  |+++++++++                                         | 17% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++                             | 42% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 58% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 7

  |                                                  | 0 % ~calculating  
  |+++++                                             | 8 % ~00s          
  |+++++++++                                         | 17% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++                             | 42% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 58% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 8

  |                                                  | 0 % ~calculating  
  |+++++                                             | 10% ~00s          
  |++++++++++                                        | 20% ~00s          
  |+++++++++++++++                                   | 30% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 9

  |                                                  | 0 % ~calculating  
  |++++++                                            | 11% ~00s          
  |++++++++++++                                      | 22% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++++                           | 44% ~00s          
  |++++++++++++++++++++++++++++                      | 56% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 10

  |                                                  | 0 % ~calculating  
  |+++++++                                           | 12% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++++                               | 38% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++++                  | 62% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 11

  |                                                  | 0 % ~calculating  
  |++++                                              | 7 % ~00s          
  |+++++++                                           | 13% ~00s          
  |++++++++++                                        | 20% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |++++++++++++++++++++                              | 40% ~00s          
  |++++++++++++++++++++++++                          | 47% ~00s          
  |+++++++++++++++++++++++++++                       | 53% ~00s          
  |++++++++++++++++++++++++++++++                    | 60% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 12

  |                                                  | 0 % ~calculating  
  |+++++                                             | 8 % ~00s          
  |+++++++++                                         | 17% ~00s          
  |+++++++++++++                                     | 25% ~00s          
  |+++++++++++++++++                                 | 33% ~00s          
  |+++++++++++++++++++++                             | 42% ~00s          
  |+++++++++++++++++++++++++                         | 50% ~00s          
  |++++++++++++++++++++++++++++++                    | 58% ~00s          
  |++++++++++++++++++++++++++++++++++                | 67% ~00s          
  |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
Calculating cluster 13

  |                                                  | 0 % ~calculating  
  |+++++                                             | 9 % ~00s          
  |++++++++++                                        | 18% ~00s          
  |++++++++++++++                                    | 27% ~00s          
  |+++++++++++++++++++                               | 36% ~00s          
  |+++++++++++++++++++++++                           | 45% ~00s          
  |++++++++++++++++++++++++++++                      | 55% ~00s          
  |++++++++++++++++++++++++++++++++                  | 64% ~00s          
  |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
  |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s  
marrangeGrob(plots, nrow=2, ncol=2)

LS0tCnRpdGxlOiAic3RfcHJvZmlsaW5nX2NsZWFuIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpXcml0dGVuIGJ5IEF1bm95IFBvZGRhcgpNYXkgMjNyZCwgMjAyMgoKIyBQcm9jZXNzIHRoZSBwdW5jdGEgcXVhbnRpZmllZCByYXcgZGF0YQpgYGB7ciBldmFsPUZBTFNFfQpjdXJyZW50X2ZpbGUgPC0gcnN0dWRpb2FwaTo6Z2V0QWN0aXZlRG9jdW1lbnRDb250ZXh0KCkkcGF0aApvdXRwdXRfZmlsZSA8LSBzdHJpbmdyOjpzdHJfcmVwbGFjZShjdXJyZW50X2ZpbGUsICcuUm1kJywgJy5SJykKa25pdHI6OnB1cmwoY3VycmVudF9maWxlLCBvdXRwdXQgPSBvdXRwdXRfZmlsZSkKZmlsZS5lZGl0KG91dHB1dF9maWxlKQpgYGAKCiMjIEltcG9ydCBwYWNrYWdlcyBhbmQgZnVuY3Rpb25zCmBgYHtyfQpsaWJyYXJ5KFNldXJhdCkKbGlicmFyeSh0aWN0b2MpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShwYXRjaHdvcmspCmxpYnJhcnkocGhlYXRtYXApCmxpYnJhcnkoUkNvbG9yQnJld2VyKQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShncmlkRXh0cmEpCmBgYAoKIyMgTG9hZCB0aGUgZGF0YQpgYGB7cn0KZGF0YV9kaXIgPSAnL2hvbWUvYXVub3kvc3QvYXJjX3Byb2ZpbGluZy9zdF9hbmFseXNpcy9oYW5kX2Fubm90YXRlZF9kYXRhL3JldGhyZXNob2xkZWQnCm91dHB1dF9kaXJfcGxvdCA9ICcvaG9tZS9hdW5veS9zdC9hcmNfcHJvZmlsaW5nL3N0X2FuYWx5c2lzL3Jlc3VsdHMvcGxvdHMnCm91dHB1dF9kaXJfdGJscyA9ICcvaG9tZS9hdW5veS9zdC9hcmNfcHJvZmlsaW5nL3N0X2FuYWx5c2lzL3Jlc3VsdHMvdGFibGVzJwpgYGAKCiMjIyBNZXJnZSBib3RoIGRhdGFzZXRzIGFuZCBnZW5lcmF0ZSBhIG1ldGFkYXRhIGNvbHVtbiB0aGF0IGNvcnJlc3BvbmRzCiMjIyB0byB0aGUgY2VsbCAjCmBgYHtyfQpkZiA9IGRhdGEuZnJhbWUoKQpmb3IgKGZpbGVfbmFtZSBpbiBsaXN0LmZpbGVzKGRhdGFfZGlyKSl7CiAgcHJpbnQoZmlsZV9uYW1lKQogICNpZihncmVwbCgnNDA4X1RDJywgZmlsZV9uYW1lKSB8IGdyZXBsKCc0MDhfdk1TJywgZmlsZV9uYW1lKSl7CiAgIyAgbmV4dAogICN9CiAgZGZfdG9fYXBwZW5kIDwtIHJlYWQudGFibGUoZmlsZS5wYXRoKGRhdGFfZGlyLCBmaWxlX25hbWUpLCBzZXAgPSAnLCcsIGhlYWRlciA9IFRSVUUpCiAgd2hpbGUobGVuZ3RoKGluZCA8LSB3aGljaChkZl90b19hcHBlbmQkSW1hZ2UuTmFtZSA9PSAiIikpID4gMCl7CiAgICBkZl90b19hcHBlbmQkSW1hZ2UuTmFtZVtpbmRdIDwtIGRmX3RvX2FwcGVuZCRJbWFnZS5OYW1lW2luZCAtMV0KICB9CiAgI2RmX3RvX2FwcGVuZCA8LSBkZl90b19hcHBlbmQgJT4lCiAgIyAgZHBseXI6OnNlbGVjdCgtMSkKICBpZihncmVwbCgnMTY0JywgZmlsZV9uYW1lKSl7CiAgICBkZl90b19hcHBlbmQgPC0gZGZfdG9fYXBwZW5kICU+JQogICAgICBkcGx5cjo6c2VsZWN0KC1YKQogIH0KICBjb2xuYW1lcyhkZl90b19hcHBlbmQpIDwtIHRvdXBwZXIoY29sbmFtZXMoZGZfdG9fYXBwZW5kKSkKICBkZl90b19hcHBlbmQgPC0gZGZfdG9fYXBwZW5kICU+JQogICAgbXV0YXRlKGFyZWEgPSBzdHJzcGxpdChmaWxlX25hbWUsICcuY3N2JylbWzFdXSkKICBpZighaXNfZW1wdHkoZGYpKXsKICAgIGRmX3RvX2FwcGVuZCA8LSBkZl90b19hcHBlbmQgJT4lCiAgICAgICAgICBkcGx5cjo6c2VsZWN0KGNvbG5hbWVzKGRmKSkKICB9CiAgZGYgPC0gcmJpbmQoZGYsIGRmX3RvX2FwcGVuZCkKfQpgYGAKCmBgYHtyfQojIyMgcmlnaHQgbm93IGkgd2FudCBleHBlcmltZW50ICMgZm9yIHRoZSBkYXkgYW5kIG92ZXJ3cml0ZSB0byBiZSBmYWxzZQojIAojICMjIFdyaXRlIHRvIGZpbGUKIyBkYXRlIDwtIGdzdWIoJy0nLCAnJywgU3lzLkRhdGUoKSkKIyBleHBfbnVtIDwtICcxJwojIGZvbGRlciA8LSBwYXN0ZTAoZGF0ZSwgJ18nLCBleHBfbnVtKQojIAojICMjIGNoZWNrIGlmIGZvbGRlciBleGlzdHMsIGlmIG5vdCwgdGhlbiBwcm9jZWVkCiMgZXhwbHRkaXIgPC0gZmlsZS5wYXRoKG91dHB1dF9kaXJfcGxvdCwgZm9sZGVyKQojIGV4dGJsZGlyIDwtIGZpbGUucGF0aChvdXRwdXRfZGlyX3Bsb3QsIGZvbGRlcikKIyAKIyAKIyBpZihkaXIuZXhpc3RzKGV4cGx0ZGlyKSB8fCBkaXIuZXhpc3RzKGV4dGJsZGlyKSl7CiMgICBxdWl0KCdGb2xkZXIgZXhpc3RzLiBTZXQgLS1vdmVyd3JpdGUgdG8gVFJVRSB0byByZXBsYWNlIGZvbGRlcicpCiMgfQojIAojICMjIENyZWF0ZSB0aGUgZGlyZWN0b3JpZXMKIyBkaXIuY3JlYXRlKGV4cGx0ZGlyKQojIGRpci5jcmVhdGUoZXh0YmxkaXIpCmBgYAoKCiMjIyBBZGQgdGhlIGNlbGxuYW1lcyBhcyByb3duYW1lcwpgYGB7cn0Kcm93bmFtZXMoZGYpIDwtIGMob3V0ZXIoYygnQycpLCAxOmRpbShkZilbMV0sIEZVTj1wYXN0ZTApKQpgYGAKCiMjIERlZmluZSB0aGUgZGlmZmVyZW50IGdlbmUgc2V0cyBiYXNlZCBvbiBjb252ZXJzYXRpb24gd2l0aCBKWQpgYGB7cn0KbWlncmEgPSB0b3VwcGVyKGMoJ0RjeCcsICdMcnA4JywgJ1JlbG4nLCAnRGNkYzInLCAnTmNhbTEnLCAnS2lhMDMxOScsICdWbGRscicpKQojQ0dFID0gdG91cHBlcihjKCdFZ2ZyJywgJ1ZpcCcsICdQcm94MScpKQojTEdFID0gdG91cHBlcihjKCdUc2h6MScsICdHc3gyJywgJ0VteDEnKSkKI01HRSA9IHRvdXBwZXIoYygnTGh4NicsICdNYWYxJywgJ1NzdCcpKQpDR0UgPSB0b3VwcGVyKGMoJ0VnZnInLCAnUHJveDEnKSkKTEdFID0gdG91cHBlcihjKCdUc2h6MScsICdHc3gyJywgJ0VteDEnKSkKTUdFID0gdG91cHBlcihjKCdMaHg2JywgJ01hZjEnLCAnTmt4Mi4xJykpCkNHRV9MR0UgPSB0b3VwcGVyKGMoJ1NjZ24nLCAnQ291cHRmMicsICdTcDgnLCAnQ2FsYjInLCAnUGF4NicpKQpHQUJBID0gdG91cHBlcihjKCdEbHgyJywgJ0dhZDEnKSkKbWF0dXJlX0lOID0gdG91cHBlcihjKCdHYWQxJywgJ1ZpcCcsICdTc3QnKSkKcHJvZ2VuX0lOID0gdG91cHBlcihjKCdEbHgyJykpCkV4Y2l0ID0gdG91cHBlcihjKCdFb21lcycsICdUYnIxJywgJ1NhdGIyJykpCmxpZ2FuZCA9IHRvdXBwZXIoYygnUmVsbicsICdDeGNsMTInLCAnQ3hjbDE0JykpCnJlY2VwdCA9IHRvdXBwZXIoYygnTHJwOCcsICdDeGNyNycsICdDeGNyNCcsICdWbGRscicpKQpgYGAKCiMjIEhlYXRtYXBzCgojIyMgUmVhcnJhbmdlIHRoZSBkYXRhIHRvIHdpZGUgZm9yIGhlYXRtYXAKYGBge3J9CmRmX2xvbmdlciA8LSBkZiAlPiUKICByb3duYW1lc190b19jb2x1bW4oJ0NlbGwnKSAlPiUKICBkcGx5cjo6c2VsZWN0KC1jKGFyZWEsIElNQUdFLk5BTUUpKSAlPiUKICBwaXZvdF9sb25nZXIoIUNlbGwsIG5hbWVzX3RvID0gJ0dlbmUnLCB2YWx1ZXNfdG8gPSAiUHVuY3RhMk51Y19JUiIpCgpkZl93aWRlIDwtIGRmICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbignQ2VsbCcpJT4lCiAgZHBseXI6OnNlbGVjdCgtYyhhcmVhLCBJTUFHRS5OQU1FKSkgJT4lCiAgcGl2b3RfbG9uZ2VyKCFDZWxsLCBuYW1lc190byA9ICdHZW5lJywgdmFsdWVzX3RvID0gIlB1bmN0YTJOdWNfSVIiKSAlPiUKICBwaXZvdF93aWRlcihuYW1lc19mcm9tID0gR2VuZSwgdmFsdWVzX2Zyb20gPSBQdW5jdGEyTnVjX0lSKQpgYGAKCgojIyBzb21lIHF1aWNrIGhlYXRtYXAgYnVzaW5lc3MKCmBgYHtyfQojIyMgbG9nKHgrMSkgZnVuY3Rpb24KbG9nMSA8LSBmdW5jdGlvbih4KSB7CiAgIHJldHVybihsb2coeCsxKSkKfQoKIyMjIFNjYWxlIGFuZCB0aGVuIGxvZysxCmxvZzFfYW5kX211bHQgPC0gZnVuY3Rpb24oeCkgewogICByZXR1cm4obG9nMSh4KjFlNCkpCn0KCiMjIyBHZXQgdGhlIG51bWVyaWMgdmFsdWVzIG9ubHkKZGZfbnVtIDwtIGRmX3dpZGUgJT4lCiAgY29sdW1uX3RvX3Jvd25hbWVzKCdDZWxsJykKCiMjIyBOb3JtYWxpemUgdG8gY2VsbCB0b3RhbAojIyMgTG9nICsgTXVsdGlwbHkKIyMjIENlbnRlciBhbmQgc2NhbGUKc2NhbGVkX21hdCA8LSBkZl9udW0gJT4lCiAgc3dlZXAoMSwgcm93U3VtcyhkZl9udW0pLCAnLycpICU+JQogIGxvZzFfYW5kX211bHQoKSAlPiUKICBhcHBseSgxLCBzY2FsZSkKCgoKIyMjIEFwcGx5IHNlcGFyYXRlIGNsdXN0ZXJpbmcsIG5lZWQgdG8gbG9vayBpbnRvIHdoeSAKaHIgPC0gaGNsdXN0KGFzLmRpc3QoMS1jb3IodChzY2FsZWRfbWF0KSwgbWV0aG9kPSJwZWFyc29uIikpLCBtZXRob2QgPSAiY29tcGxldGUiKQpoYyA8LSBoY2x1c3QoYXMuZGlzdCgxLWNvcihzY2FsZWRfbWF0Wyxnb29kX2NlbGxzXSwgbWV0aG9kPSJzcGVhcm1hbiIpKSwgbWV0aG9kPSJjb21wbGV0ZSIpCgphbm5vdGF0aW9uIDwtIGRhdGEuZnJhbWUoYXJlYSA9IGZhY3RvcihkZltnb29kX2NlbGxzLF0kYXJlYSkpCnJvd25hbWVzKGFubm90YXRpb24pIDwtIHJvd25hbWVzKGRmW2dvb2RfY2VsbHMsIF0pICMgY2hlY2sgb3V0IHRoZSByb3cgbmFtZXMgb2YgYW5ub3RhdGlvbgoKcm93bmFtZXMoc2NhbGVkX21hdCkgPC0gY29sbmFtZXMoZGZfbnVtKQpzY2FsZWRfbWF0Wyxnb29kX2NlbGxzXSAlPiUKICBwaGVhdG1hcChhbm5vdGF0aW9uX2NvbCA9IGFubm90YXRpb24sIAogICAgICAgICAgIGNvbG9yID0gY29sb3JSYW1wUGFsZXR0ZShyZXYoYnJld2VyLnBhbChuID0gNywgbmFtZSA9ICJSZFlsQnUiKSkpKDEwMCksCiAgI2JyZWFrcyA9IHNlcShmcm9tPSAtNSwgdG8gPSA1LCBieSA9IDExLzEwMC4pLCAKICBjbHVzdGVyX3Jvd3MgPSBociwgY2x1c3Rlcl9jb2xzID0gaGMsIAogICNjbHVzdGVyX3Jvd3MgPSBUUlVFLCBjbHVzdGVyX2NvbHMgPSBUUlVFLCAKICAjY2x1c3RlcmluZ19kaXN0YW5jZV9yb3dzID0gImNvcnJlbGF0aW9uIiwgCiAgI2NsdXN0ZXJpbmdfZGlzdGFuY2VfY29scyA9ICJjb3JyZWxhdGlvbiIsCiAgZm9udHNpemVfcm93ID0gOCwgZm9udHNpemVfY29sID0gNCwgc2hvd19jb2xuYW1lcyA9IEZBTFNFLAogICAgICAgICAgIHNob3dfcm93bmFtZXMgPSBUUlVFLCBjZWxsX3dpZHRoID0gNiwgY2VsbGhlaWdodCA9IDgpIywKICAgICAgICAgICNmaWxlbmFtZSA9IGZpbGUucGF0aChvdXRwdXRfZGlyLCAnbG9nLnBuZycpKQpgYGAKIyMjIEJ5IGFyZWEsIG5vdCBkZW5kb2dyYW0KYGBge3J9CnJvd25hbWVzKHNjYWxlZF9tYXQpIDwtIGNvbG5hbWVzKGRmX251bSkKYW5ub3RhdGlvbiA8LSBkYXRhLmZyYW1lKGNsdXN0ID0gSWRlbnRzKGp5b2JqKSkKc2NhbGVkX21hdCAlPiUKICBwaGVhdG1hcChhbm5vdGF0aW9uX2NvbCA9IGFubm90YXRpb24sIAogICAgICAgICAgIGNvbG9yID0gY29sb3JSYW1wUGFsZXR0ZShyZXYoYnJld2VyLnBhbChuID0gNywgbmFtZSA9ICJSZFlsQnUiKSkpKDEwMCksCiAgI2JyZWFrcyA9IHNlcShmcm9tPSAtNSwgdG8gPSA1LCBieSA9IDExLzEwMC4pLCAKICBjbHVzdGVyX3Jvd3MgPSBociwgY2x1c3Rlcl9jb2xzID0gVFJVRSwgCiAgI2NsdXN0ZXJfcm93cyA9IFRSVUUsIGNsdXN0ZXJfY29scyA9IFRSVUUsIAogICNjbHVzdGVyaW5nX2Rpc3RhbmNlX3Jvd3MgPSAiY29ycmVsYXRpb24iLCAKICAjY2x1c3RlcmluZ19kaXN0YW5jZV9jb2xzID0gImNvcnJlbGF0aW9uIiwKICBmb250c2l6ZV9yb3cgPSA4LCBmb250c2l6ZV9jb2wgPSA0LCBzaG93X2NvbG5hbWVzID0gRkFMU0UsCiAgICAgICAgICAgc2hvd19yb3duYW1lcyA9IFRSVUUsIGNlbGxfd2lkdGggPSA2LCBjZWxsaGVpZ2h0ID0gOCkjLAogICAgICAgICAgIyBmaWxlbmFtZSA9ICcvaG9tZS9hdW5veS9waGVhdG1hcF9sb2d6X25vcm0ucG5nJykKYGBgCgoKYGBge3J9CmRpc3RfbWF0IDwtIGFzLmRpc3QoMS1jb3Ioc2NhbGVkX21hdCwgbWV0aG9kPSJzcGVhcm1hbiIpKQpkaXN0X21hdCAlPiUKcGhlYXRtYXAoYW5ub3RhdGlvbl9jb2wgPSBhbm5vdGF0aW9uLAogICAgICAgICBjb2xvciA9IGNvbG9yUmFtcFBhbGV0dGUocmV2KGJyZXdlci5wYWwobiA9IDcsIG5hbWUgPSAiUmRZbEJ1IikpKSgxMDApLAogICAgICAgIGNsdXN0ZXJfcm93cyA9IFRSVUUsIGNsdXN0ZXJfY29scyA9IFRSVUUsCmZvbnRzaXplX3JvdyA9IDgsIGZvbnRzaXplX2NvbCA9IDQsIHNob3dfY29sbmFtZXMgPSBGQUxTRSwKICAgICAgICAgc2hvd19yb3duYW1lcyA9IEZBTFNFLCBjZWxsX3dpZHRoID0gMC4xLCBjZWxsaGVpZ2h0ID0gMC4zKSMsCiAgICAjZmlsZW5hbWUgPSBmaWxlLnBhdGgob3V0cHV0X2RpciwgJ3NwZWFybWFubl9sb2cucG5nJykpCmBgYAoKCmBgYHtyfQpkZl9sb25nZXIgJT4lCiAgZmlsdGVyKEdlbmUgPT0gJ0dzeDInKSAlPiUKICBnZ3Bsb3QoYWVzKHg9UHVuY3RhMk51Y19JUikpICsgCiAgZ2VvbV9oaXN0b2dyYW0oY29sb3I9ImJsYWNrIiwgZmlsbD0id2hpdGUiKQpgYGAKYGBge3J9CnBsb3RzID0gbGlzdCgpCnNhdmUgPSBGQUxTRQphbGxfZ2VuZXMgPC0gZGYgJT4lIAogIGRwbHlyOjpzZWxlY3QoLWFyZWEpICU+JQogIGNvbG5hbWVzKCkKCmZvciAoaSBpbiAxOmxlbmd0aChhbGxfZ2VuZXMpKXsKICBwbG90c1tbaV1dIDwtIGRmX2xvbmdlciAlPiUKICBmaWx0ZXIoR2VuZSA9PSBhbGxfZ2VuZXNbaV0pICU+JQogIG11dGF0ZShsb2dfbm9ybSA9IGxvZzFfYW5kX211bHQoUHVuY3RhMk51Y19JUikpICU+JQogIGdncGxvdChhZXMoeD1sb2dfbm9ybSwgbGFiZWwgPSBHZW5lKSkgKyAKICBnZW9tX2hpc3RvZ3JhbShjb2xvcj0iYmxhY2siLCBmaWxsPSJ3aGl0ZSIpICsgCiAgbGFicyh0aXRsZT1hbGxfZ2VuZXNbaV0pKwogIHRoZW1lX2NsYXNzaWMoKQp9CgojZ3JpZEV4dHJhOjpncmlkLmFycmFuZ2UoZ3JvYnMgPSBwbG90cywgbmNvbCA9IDQsIG5yb3cgPSA4LCBsZW5ndGhzPTI6NikKaWYgKHNhdmUpewogIG1sIDwtIG1hcnJhbmdlR3JvYihwbG90cywgbnJvdz0yLCBuY29sPTIpCiAgZ2dzYXZlKCIvaG9tZS9hdW5veS9yYXdfaGlzdG9ncmFtcy5wZGYiLCBtbCkKfSBlbHNlewogIG1hcnJhbmdlR3JvYihwbG90cywgbnJvdz0yLCBuY29sPTIpCn0KYGBgCgojIyMgcHJvY2VzcyBkYXRhIGluIFNldXJhdCBvYmplY3QKCmBgYHtyfQpqeW9iaiA8LSBkZltnb29kX2NlbGxzLCBdICU+JQogIGRwbHlyOjpzZWxlY3QoLWMoYXJlYSwgSU1BR0UuTkFNRSkpICU+JQogIHQoKSAlPiUKICBDcmVhdGVTZXVyYXRPYmplY3QoKQpgYGAKCgpgYGB7cn0KanlvYmogPC0gTm9ybWFsaXplRGF0YShqeW9iaiwgc2NhbGUuZmFjdG9yID0gMWU1KSAjIyMKc3VtKGp5b2JqQGFzc2F5cyRSTkFbLF0gPCAxKQoKYGBgCiMjIyBwbG90IGhpZ2hseSB2YXJpYWJsZSBnZW5lcwpgYGB7cn0KanlvYmogPC0gRmluZFZhcmlhYmxlRmVhdHVyZXMoanlvYmosIHNlbGVjdGlvbi5tZXRob2QgPSAidnN0IikKCiMgSWRlbnRpZnkgdGhlIDEwIG1vc3QgaGlnaGx5IHZhcmlhYmxlIGdlbmVzCnRvcDEwIDwtIGhlYWQoVmFyaWFibGVGZWF0dXJlcyhqeW9iaiksIDEwKQoKIyBwbG90IHZhcmlhYmxlIGZlYXR1cmVzIHdpdGggYW5kIHdpdGhvdXQgbGFiZWxzCnBsb3QxIDwtIFZhcmlhYmxlRmVhdHVyZVBsb3QoanlvYmopICsgdGhlbWUoYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCksIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSA2KSkKcGxvdDIgPC0gTGFiZWxQb2ludHMocGxvdCA9IHBsb3QxLCBwb2ludHMgPSB0b3AxMCwgcmVwZWwgPSBUUlVFKSArIHRoZW1lKGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLCBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplID0gNikpCnBsb3QxICsgcGxvdDIgKyB0aGVtZShheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSkKI2dnc2F2ZShmaWxlLnBhdGgob3V0cHV0X2RpciwgJ3ZzdF9wbG90LnBuZycpKQpgYGAKCmBgYHtyfQphbGwuZ2VuZXMgPC0gcm93bmFtZXMoanlvYmopCmp5b2JqIDwtIFNjYWxlRGF0YShqeW9iaiwgZmVhdHVyZXMgPSBhbGwuZ2VuZXMpCmBgYAoKYGBge3J9Cmp5b2JqIDwtIFJ1blBDQShqeW9iaiwgZmVhdHVyZXMgPSBWYXJpYWJsZUZlYXR1cmVzKG9iamVjdCA9IGp5b2JqKSwgYXBwcm94ID0gRkFMU0UpCnByaW50KGp5b2JqW1sicGNhIl1dLCBkaW1zID0gMTo1LCBuZmVhdHVyZXMgPSA1KQpgYGAKYGBge3J9ClZpekRpbUxvYWRpbmdzKGp5b2JqLCBkaW1zID0gMToyLCByZWR1Y3Rpb24gPSAicGNhIikKYGBgCgpgYGB7cn0KanlvYmokYXJlYSA8LSBkZltnb29kX2NlbGxzLF0kYXJlYQpEaW1QbG90KGp5b2JqLCByZWR1Y3Rpb24gPSAicGNhIiwgZ3JvdXAuYnkgPSAnYXJlYScpCgpgYGAKCmBgYHtyfQpFbGJvd1Bsb3QoanlvYmopCmBgYAoKIyBQQzMwLHJlc29sdXRpb24gMC44CgpgYGB7cn0KanlvYmogPC0gRmluZE5laWdoYm9ycyhqeW9iaiwgZGltcyA9IDE6MzApCmp5b2JqIDwtIEZpbmRDbHVzdGVycyhqeW9iaiwgcmVzb2x1dGlvbiA9IDEuNCkKYGBgCgoKYGBge3J9Cmp5b2JqIDwtIFJ1blVNQVAoanlvYmosIGRpbXMgPSAxOjMwKQoKRGltUGxvdChqeW9iaiwgcmVkdWN0aW9uID0gInVtYXAiLCBncm91cC5ieSA9ICdzZXVyYXRfY2x1c3RlcnMnKQpgYGAKCiMjIENvbXB1dGUgc2NvcmVzIGZvciBncm91cHMgb2YgZ2VuZXMKCmBgYHtyfQpqeW9iai5tYXJrZXJzIDwtIEZpbmRBbGxNYXJrZXJzKGp5b2JqLCBvbmx5LnBvcyA9IFRSVUUsIG1pbi5wY3QgPSAwLjI1LCBsb2dmYy50aHJlc2hvbGQgPSAwLjI1KQpqeW9iai5tYXJrZXJzICU+JQogICBncm91cF9ieShjbHVzdGVyKSAlPiUKICAgc2xpY2VfbWF4KG4gPSAzMiwgb3JkZXJfYnkgPSBhdmdfbG9nMkZDKQpgYGAKYGBge3J9ClZsblBsb3QoanlvYmosYygiU0FUQjIiLCJHQUQxIikpCmBgYAoKRENYCkdBRDEKQ09VUFRGMgpTUDgKVFNIWjEKTktYMi4xCmBgYHtyfQojIERDWAojIEdBRDEKYGBgCgpgYGB7cn0KYnJlYWtwb2ludHMgPSBjKDAuMiwgMC4yNSwgMC40NSwgMC41LCAwLjU1LCAwLjYsIDAuNjUsCiAgICAgICAgICAgICAgICAwLjcsIDAuNzUsIDAuOCwgMC45LCAwLjk1LCAxLCAxLjA1LCAxLjQsIDEuNDUsIDEuNiwgMS42NSwgMS44NSwgMS45KQoKcGxvdHMgPSBsaXN0KCkKanlvYmogPC0gRmluZE5laWdoYm9ycyhqeW9iaiwgZGltcyA9IDE6MzApCmkgPSAxCmZvciAoYnJlYWtwb2ludCBpbiBicmVha3BvaW50cyl7CiAganlvYmogPC0gRmluZENsdXN0ZXJzKGp5b2JqLCByZXNvbHV0aW9uID0gYnJlYWtwb2ludCkKICBqeW9iaiA8LSBSdW5VTUFQKGp5b2JqLCBkaW1zID0gMTozMCkKICBqeW9iai5tYXJrZXJzIDwtIEZpbmRBbGxNYXJrZXJzKGp5b2JqLCBvbmx5LnBvcyA9IFRSVUUsIG1pbi5wY3QgPSAwLjI1LCBsb2dmYy50aHJlc2hvbGQgPSAwLjI1KQogIGxhYmVscyA9IGp5b2JqLm1hcmtlcnMgJT4lCiAgIGdyb3VwX2J5KGNsdXN0ZXIpICU+JQogICBzbGljZV9tYXgobiA9IDEsIG9yZGVyX2J5ID0gYXZnX2xvZzJGQykKICBuZXcuY2x1c3Rlci5pZHMgPC0gbGFiZWxzJGdlbmUKICBuYW1lcyhuZXcuY2x1c3Rlci5pZHMpIDwtIGxldmVscyhqeW9iaikKICBqeW9iaiA8LSBSZW5hbWVJZGVudHMoanlvYmosIG5ldy5jbHVzdGVyLmlkcykKICBwbG90c1tbaV1dID0gRGltUGxvdChqeW9iaiwgcmVkdWN0aW9uID0gInVtYXAiLCBwdC5zaXplID0gMSwgbGFiZWwgPSBUUlVFKSArIE5vQXhlcygpICsgTm9MZWdlbmQoKQogIGkgPSBpICsgMQp9CgptYXJyYW5nZUdyb2IocGxvdHMsIG5yb3c9MiwgbmNvbD0yKQpgYGAKCgo=